1. Field of the Invention
The present invention relates generally to SCSI host adapters, and in particular to accessing an expanded SCB array associated with a SCSI host adapter.
2. Description of Related Art
Prior art parallel SCSI host adapters have utilized a hardware I/O control block array to store hardware I/O control blocks, e.g., a sequencer control block (SCB) array to store SCBs. A driver executing on a host system constructed each SCB. The driver constructed the SCB and placed all the information in the SCB that was required by the host adapter to deliver a command to a SCSI target and to execute that command.
The SCB included a storage site location in the SCB array for the SCB. When the storage site location was loaded in a SCB array pointer register in the host adapter, the storage site for the SCB in the SCB array was addressed. The SCB also included a command block (CDB) that was delivered by the host adapter to the SCSI target. See for example, commonly assigned U.S. Pat. No. 5,659,690 entitled “Programmably Configurable Host Adapter Integrated Circuit including a RISC Processor,” of Craig A. Stuber et al. issued on Aug. 19, 1997, which is incorporated wherein by reference in its entirety. See also, commonly assigned U.S. Pat. No. 5,625,800 entitled “A Sequence Control Block Array External To A Host Adapter Integrated Circuit” of Michael D. Brayton et al. issued on Apr. 29, 1997, and U.S. Pat. No. 5,564,023 entitled “Method for Accessing A Sequencer Control Block By A Host Adapter Integrated Circuit” of B. Arlen Young issued on Oct. 8, 1996, each of which is incorporated herein by reference in its entirety.
Upon construction of the SCB by the driver, the SCB was transferred from the host system to the host adapter various techniques for transferring SCBs from a host system to a host adapter are known.
The prior art SCB array had 255 storage sites available. In particular, one byte was available for specifying an address of a storage location for a SCB within the SCB array. This limited the total number of storage sites to 256, but one storage address was required for an invalid address, and consequently only 255 storage sites in the SCB array had valid addresses.
For tagged queuing, the tag delivered to a tagged queuing SCSI target had a value equal to the number of the SCB array site containing the SCB for that SCSI target. At any given time, there can be a large number of SCBs in the SCB array for which commands have been delivered to the tagged queuing SCSI target.
When the tagged queuing SCSI target reconnected to the host adapter, the tagged queuing SCSI target returned the tag to identify the SCB that contained the command for which the target was reconnecting. The host adapter sequencer and/or hardware circuits used the tag, without modification, to identify the corresponding SCB in the SCB array. In particular, upon receiving the tag from the reconnecting target, the tag was simply loaded into the host adapter SCB array pointer register to access the appropriate SCB.
Unfortunately, the tag used in SCSI tagged queuing is limited to one byte in size except for Packetized SCSI. As SCSI command queue depths become greater in SCSI disk drives, and the SCSI disk drives do a better job of sorting commands within their queues, performance could be improved by delivering more commands to the disk drives. Also, a SCSI protocol enhancement, called Extended Addressing, enables the quadrupling of the number of SCSI targets on a single SCSI bus from 15 to 63.
The one byte limitation on the tag used in SCSI tagged queuing for non-Packetized SCSI limits the use of greater command depth, because the one byte tag size limits the number of SCB storage locations that can be addressed using only the tag returned by a reconnecting SCSI target. Hence, the ability to address only 255 storage sites will become a limiting factor in SCSI performance for non-Packetized SCSI operations.